#include "StdAfx.h"
#include "Cola.h"
#include "NodoPC.h"

Cola::Cola(void)
{
	frente=NULL;
	fondo=NULL;
}

Cola::~Cola(void)
{
}


void Cola::setFrente(NodoPC* pFrente){
	this->frente = pFrente;
}

void Cola::setFondo(NodoPC* pFondo){
	this->fondo = pFondo;
}

NodoPC* Cola::getFrente(){
	return this->frente;
}
NodoPC* Cola::getFondo(){
	return this->fondo;
}

void Cola::encolar(std::string pDato){
	NodoPC* nuevo = new NodoPC(pDato);
	if(frente == NULL){
		frente = nuevo;
		fondo = nuevo;
	}else
          fondo->setSig(nuevo);
	fondo = nuevo;
	     
}
NodoPC* Cola::desencolar(){
	NodoPC* aux = frente;
	if (frente != NULL){
		frente = frente->getSig();

		if (frente == NULL)
			fondo = NULL;

		aux->setSig(NULL);
		return aux;
	}
}

char* Cola::muestreCola(){

	char res[1000];
	strcpy(res,"\n \n La cola tiene : \n \n");

	NodoPC* aux = frente;
	do {
		strcat(res, frente->getDato().c_str());
		strcat(res,"\n");
		NodoPC* aux2 = desencolar();
		fondo->setSig(aux2);
		fondo = aux2;
		
	}while(aux != frente);
	return res;
}

void Cola::invertirCola()
{
	
	NodoPC* aux = frente;
	do {
		NodoPC* aux2 = desencolar();
		fondo->setSig(aux2);
		fondo = aux2;		
	}while(aux != frente);
}
